package com.drinkdelivery.service.impl;

import java.util.Arrays;
import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.drinkdelivery.common.constants.ProductConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.drinkdelivery.mapper.ProductSkuSpecValueMapper;
import com.drinkdelivery.common.domain.ProductSkuSpecValue;
import com.drinkdelivery.service.IProductSkuSpecValueService;

/**
 *  SKU-规格值关联Service业务层处理
 *
 * @author lzh
 * @date 2024-11-08
 */
@Service
public class ProductSkuSpecValueServiceImpl extends ServiceImpl<ProductSkuSpecValueMapper, ProductSkuSpecValue> implements IProductSkuSpecValueService
{
    @Autowired
    private ProductSkuSpecValueMapper productSkuSpecValueMapper;

    /**
     * 查询 SKU-规格值关联
     *
     * @param id  SKU-规格值关联主键
     * @return  SKU-规格值关联
     */
    @Override
    public ProductSkuSpecValue selectProductSkuSpecValueById(Long id)
    {
        //根据id获取未逻辑删除的数据
        LambdaQueryWrapper<ProductSkuSpecValue> lqw = new LambdaQueryWrapper<>();
        lqw
                .eq(ProductSkuSpecValue::getId,id)
                .eq(ProductSkuSpecValue::getIsDeleted, 0);
        return this.getOne(lqw);
    }

    /**
     * 查询 SKU-规格值关联列表
     *
     * @param productSkuSpecValue  SKU-规格值关联
     * @return  SKU-规格值关联
     */
    @Override
    public List<ProductSkuSpecValue> selectProductSkuSpecValueList(ProductSkuSpecValue productSkuSpecValue)
    {
        return productSkuSpecValueMapper.selectProductSkuSpecValueList(productSkuSpecValue);
    }

    /**
     * 新增 SKU-规格值关联
     *
     * @param productSkuSpecValue  SKU-规格值关联
     * @return 结果
     */
    @Override
    public Boolean insertProductSkuSpecValue(ProductSkuSpecValue productSkuSpecValue)
    {
        return this.save(productSkuSpecValue);
    }

    /**
     * 修改 SKU-规格值关联
     *
     * @param productSkuSpecValue  SKU-规格值关联
     * @return 结果
     */
    @Override
    public Boolean updateProductSkuSpecValue(ProductSkuSpecValue productSkuSpecValue)
    {
        return this.updateById(productSkuSpecValue);
    }

    /**
     * 批量删除 SKU-规格值关联
     *
     * @param ids 需要删除的 SKU-规格值关联主键
     * @return 结果
     */
    @Override
    public boolean deleteProductSkuSpecValueByIds(Long[] ids)
    {
        LambdaUpdateWrapper<ProductSkuSpecValue> luw = new LambdaUpdateWrapper<>();
        luw
                //未逻辑删除
                .eq(ProductSkuSpecValue::getIsDeleted,0)
                //遍历查询ids
                .in(ProductSkuSpecValue::getId, Arrays.asList(ids))
                //进行逻辑删除
                .set(ProductSkuSpecValue::getIsDeleted, 1);
        return this.update(luw);
    }

    /**
     * 删除 SKU-规格值关联信息
     *
     * @param id  SKU-规格值关联主键
     * @return 结果
     */
    @Override
    public Boolean deleteProductSkuSpecValueById(Long id)
    {
        LambdaUpdateWrapper<ProductSkuSpecValue> luw = new LambdaUpdateWrapper<>();
        luw.eq(ProductSkuSpecValue::getId,id);
        luw.set(ProductSkuSpecValue::getIsDeleted, ProductConstant.DELETE);
        return this.update(luw);
    }
}
